上篇介紹了 Prometheus 如何用多個時間序列,組織成 OpenMetrics 的指標族。這篇我們終於可以切入實務上最先遇到的的東西了-- PromQL 讀指標資料。
我猜多數 PromQL 使用者,第一次使用 PromQL 都是在 Grafana 監控面版上。卻不知道,Grafana 是用什麼協定從 Prometheus 讀取資料的。或許稍有經驗的人,會看過 Grafana 跳出 http timeout 的錯誤訊息,而得知 Grafana 是用 http 協定從 Prometheus 讀取資料的。
另外可能有人注意到 :9090/graph
這個網址,做為 Prometheus 的 Web UI,對於同樣的 PromQL,有 table 和 graph 兩種呈現方式,呈現出來的資訊量並不相同。雖然都是 http,但是這兩個介面的資料格式,卻不相同。
PromQL 是一個有完善定義,且有許多函數的表達式語言。
比方說下面這個查詢,它有用到如{}
, "
, []
等符號,這些符號都有特定的意義。顯然可以猜到大括號代表標籤值、中括號代表時間窗口大小。但是這些符號具體代表什麼意義呢?時間窗口大小是開區間還是閉區間呢?我在不同現實時間下同一個 PromQL 查詢,會得到同樣的結果嗎?
http_requests_total{job="apiserver", handler="/api/comments"}[5m]
文件 羅列了所有的 alert template 關鍵字。這些關鍵字可以用來套在 Golang 樣板上。但 Golang 樣板的語法又是什麼呢?
本篇的問題比較基本,又是大家會先碰到的問題。
預計之後三篇都要來回答這些問題。